home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.convert;
-
- import com.extensibility.app.DialogFactory;
- import com.extensibility.app.UI;
- import com.extensibility.rock.FileLoader;
- import com.extensibility.xa.SchemaDoc;
- import com.extensibility.xml.AttributeDeclaration;
- import com.extensibility.xml.BaseDeclaration;
- import com.extensibility.xml.ContentModelTerm;
- import com.extensibility.xml.ElementDeclaration;
- import com.extensibility.xml.TypeRef;
- import com.extensibility.xml.dt.DataTypeFactory;
- import java.awt.Dialog;
- import java.awt.Frame;
- import java.io.File;
- import java.lang.reflect.Field;
- import java.util.Enumeration;
-
- public class ImportClassAction extends BaseImportAction {
- public ImportClassAction(SchemaDoc var1) {
- super(var1, "import.item.class");
- }
-
- public void importClass(Class var1, ImportClassOptions var2) {
- String var3 = var1.getName();
- var3 = var2.shortNames ? var3.substring(var3.lastIndexOf(46) + 1) : var3;
- ElementDeclaration var4 = super.doc.getNamedElement(var3);
- if (var4 == null) {
- var4 = new ElementDeclaration(var3);
- super.doc.insertDeclaration(var4, (BaseDeclaration)null);
- }
-
- var4.setContentModel(false, !var2.modelAsAttributes);
- Field[] var6 = var1.getDeclaredFields();
-
- for(int var7 = 0; var7 < var6.length; ++var7) {
- Class var8 = var6[var7].getType();
- boolean var9 = var8.isArray();
- if (var9) {
- var8 = var8.getComponentType();
- }
-
- String var10 = var6[var7].getName();
- String var11 = var8.getName();
- boolean var12 = var11.indexOf("java") == 0;
- var11 = var2.shortNames ? var11.substring(var11.lastIndexOf(46) + 1) : var11;
- Object var5;
- if (!var2.modelAsAttributes && (!var2.modelAsMixed || !var12)) {
- if (var2.recurse && var10.equalsIgnoreCase(var11)) {
- var10 = var11;
- }
-
- ContentModelTerm var13 = new ContentModelTerm(new TypeRef(var10), (char)(var9 ? '+' : '\u0000'), ',');
- var4.getContentModel().getRootGroup().addTerm(var13);
- if (var2.recurse && super.doc.getNamedElement(var11) == null && !var12 && !var8.isPrimitive()) {
- this.importClass(var8, var2);
- var5 = new ElementDeclaration(var10, DataTypeFactory.createDataTypeFromClass(var8, var11));
- } else {
- var5 = new ElementDeclaration(var10, DataTypeFactory.createDataTypeFromClass(var8, var11));
- }
- } else {
- if (var4.getAttribute(var10) != null) {
- var5 = null;
- } else {
- var5 = new AttributeDeclaration(var4, var10, DataTypeFactory.createDataTypeFromClass(var8, var11), var8.isPrimitive(), (String)null);
- }
-
- if (var2.recurse && super.doc.getNamedElement(var11) == null && !var12 && !var8.isPrimitive()) {
- this.importClass(var8, var2);
- }
- }
-
- if (var5 != null) {
- super.doc.insertDeclaration((BaseDeclaration)var5, (BaseDeclaration)null);
- }
- }
-
- }
-
- public boolean doImport(Frame var1) {
- File var2 = DialogFactory.askFile(var1, UI.getString("dialog.open.title", UI.getFileTypeName("class")), new String[]{"class"});
- if (var2 == null) {
- return false;
- } else {
- 1 var3 = new 1(var1, (ImportClassAction)null);
- FileLoader var4 = new FileLoader(var2, var3);
- Enumeration var6 = null;
- String var5;
- if (var4.sourceIsArchive()) {
- var5 = "";
- var6 = var4.getClasses();
- } else {
- if (!var4.sourceIsClassFile()) {
- DialogFactory.stop(var1, "stop.not.a.class.file");
- return false;
- }
-
- var5 = var4.qualifyName(var2);
- }
-
- ImportClassDialog var7 = new ImportClassDialog(var1, var5, var6);
- ((Dialog)var7).show();
- ImportClassOptions var8 = var7.getOptions();
- var5 = var7.getClassName();
- if (var8 == null) {
- return false;
- } else {
- try {
- Class var9 = ((ClassLoader)var4).loadClass(var5);
- if (var9 != null) {
- this.importClass(var9, var8);
- return true;
- } else {
- boolean var15 = false;
- return var15;
- }
- } catch (ClassNotFoundException var11) {
- DialogFactory.stop(var1, UI.getString("class.load.failure"));
- boolean var14 = false;
- return var14;
- } catch (NoClassDefFoundError var12) {
- DialogFactory.stop(var1, UI.getString("class.load.failure"));
- boolean var10 = false;
- return var10;
- }
- }
- }
- }
- }
-